package com.ruoyi.drone.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 任务执行对象 drone_task_execution
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public class DroneTaskExecution extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 执行ID */
    private Long executionId;

    /** 任务ID（关联drone_task） */
    @Excel(name = "任务ID")
    private Long taskId;

    /** 飞手ID（关联drone_user_profile） */
    @Excel(name = "飞手ID")
    private Long pilotId;

    /** 申请ID（关联drone_task_application） */
    @Excel(name = "申请ID")
    private Long applicationId;

    /** 开始执行时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 结束执行时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结束执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 工作时长（小时） */
    @Excel(name = "工作时长")
    private BigDecimal workHours;

    /** 工作内容 */
    @Excel(name = "工作内容")
    private String workContent;

    /** 工作图片（JSON格式） */
    @Excel(name = "工作图片")
    private String workImages;

    /** 工作视频（JSON格式） */
    @Excel(name = "工作视频")
    private String workVideos;

    /** 最终价格 */
    @Excel(name = "最终价格")
    private BigDecimal finalPrice;

    /** 状态（0进行中 1已完成 2已暂停 3已取消） */
    @Excel(name = "状态", readConverterExp = "0=进行中,1=已完成,2=已暂停,3=已取消")
    private String status;

    /** 完成度（百分比） */
    @Excel(name = "完成度")
    private BigDecimal completionRate;

    /** 质量评分（1-5分） */
    @Excel(name = "质量评分")
    private Integer qualityScore;

    public void setExecutionId(Long executionId) 
    {
        this.executionId = executionId;
    }

    public Long getExecutionId() 
    {
        return executionId;
    }
    public void setTaskId(Long taskId) 
    {
        this.taskId = taskId;
    }

    public Long getTaskId() 
    {
        return taskId;
    }
    public void setPilotId(Long pilotId) 
    {
        this.pilotId = pilotId;
    }

    public Long getPilotId() 
    {
        return pilotId;
    }
    public void setApplicationId(Long applicationId) 
    {
        this.applicationId = applicationId;
    }

    public Long getApplicationId() 
    {
        return applicationId;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setWorkHours(BigDecimal workHours) 
    {
        this.workHours = workHours;
    }

    public BigDecimal getWorkHours() 
    {
        return workHours;
    }
    public void setWorkContent(String workContent) 
    {
        this.workContent = workContent;
    }

    public String getWorkContent() 
    {
        return workContent;
    }
    public void setWorkImages(String workImages) 
    {
        this.workImages = workImages;
    }

    public String getWorkImages() 
    {
        return workImages;
    }
    public void setWorkVideos(String workVideos) 
    {
        this.workVideos = workVideos;
    }

    public String getWorkVideos() 
    {
        return workVideos;
    }
    public void setFinalPrice(BigDecimal finalPrice) 
    {
        this.finalPrice = finalPrice;
    }

    public BigDecimal getFinalPrice() 
    {
        return finalPrice;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setCompletionRate(BigDecimal completionRate) 
    {
        this.completionRate = completionRate;
    }

    public BigDecimal getCompletionRate() 
    {
        return completionRate;
    }
    public void setQualityScore(Integer qualityScore) 
    {
        this.qualityScore = qualityScore;
    }

    public Integer getQualityScore() 
    {
        return qualityScore;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("executionId", getExecutionId())
            .append("taskId", getTaskId())
            .append("pilotId", getPilotId())
            .append("applicationId", getApplicationId())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("workHours", getWorkHours())
            .append("workContent", getWorkContent())
            .append("workImages", getWorkImages())
            .append("workVideos", getWorkVideos())
            .append("finalPrice", getFinalPrice())
            .append("status", getStatus())
            .append("completionRate", getCompletionRate())
            .append("qualityScore", getQualityScore())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
